Christoph Wolk [Thu, 5 Jun 2025 15:18:08 +0000 (15:18 +0000)]
[PATCH] libtaskmanager: fix "move to activity" when on almost all activities
Using the task manager to move windows to other activities works in
most circumstances, but fails under one condition: when a window is
already on all activities except the one that is being moved to, the
window instead ends up on all activities, and has to be moved to that
activity again to be only on that workspace. This is usually a rare edge
case, but very commonly happens when using exactly two activities,
namely always when moving a window from one activity to the other.
This is the result of some unusual api implementation details of
activities: a window being on all activities is represented by having
the activity list for that window empty. Moving a window to a different
activity in libtaskmanager is done by first adding the window to the
activity list using the plasma wayland protocol. If the list on the kwin
side is now full, it'll flip it over into the empty list (i.e. all
activities). Next libtaskmanager tries to remove the other activities
from the list, this fails because the list is already empty (and kwin
doesn't handle this because "this use case is not important enough to
handle here").
Luckily enough, this use case is trivially easy to handle here, all we
need to do is remove existing activities first, then add the new one.
This will also briefly put it on all activities, but adding new
activities works (and puts it only on that activity), it's only
removing them that fails.
Co-authored-by: Christoph Wolk <cwo.kde@posteo.net>
Gbp-Pq: Name upstream_e2ae8f54_libtaskmanager-fix-move-to-activity-when-on-almost-all-activities.patch
Christoph Wolk [Tue, 3 Jun 2025 21:04:21 +0000 (21:04 +0000)]
[PATCH] containmentlayoutmanager: don't enter edit mode without activefocus
ItemContainer enters edit mode on pressAndHold for desktop widgets not
set to immutable. This causes a problem with menus that open on press -
the container will not receive further mouse events that now go to the
menu, so it still considers itself pressed and unmoved the whole time,
and goes into edit mode after a while, exiting the menu. This makes
on-press menus in desktop widgets borderline unusable, and even if the
user manages to be quick enough to activate the desired entry during the
pressAndHold duration, it'll still enter edit mode unless the user also
does a full click on the applet afterward.
We can circumvent this particular case relatively easily by listening to
the container's activefocus changes - the popup opening does not cause
a focusOut event, but it does take activeFocus away from the container,
so if we stop the timer in that case, it works out as it should.
Co-authored-by: Christoph Wolk <cwo.kde@posteo.net>
Gbp-Pq: Name upstream_8e6b79da_containmentlayoutmanager-don-t-enter-edit-mode-without-activefocus.patch
Vlad Zahorodnii [Wed, 28 May 2025 13:36:20 +0000 (13:36 +0000)]
[PATCH] shell: Rearrange the teardown order
At the moment, the ShellCorona is destroyed after the QApplication object.
Destroying something after the application object can lead to
unexpected results because most of the code is written with an assumption
that the app object and the associated objects, e.g. the qpa, are still
valid when the cleanup code runs.
This change puts the ShellCorona on the stack so the destruction order
looks as follows:
Nate Graham [Thu, 22 May 2025 15:06:52 +0000 (09:06 -0600)]
[PATCH] libtaskmanager: show Comment for launcher icons when appropriate
Right now, launcher icons get a caption equal to the app's GenericName,
if one is set in the metadata. If not, it gets no caption.
This differs from what Kicker and Kickoff Manager do: a more complex
behavior to show the Comment if the app has no GenericName or if its
GenericName is equal to its Name. Let's replicate the same logic here.
Christoph Wolk [Sat, 17 May 2025 07:38:00 +0000 (07:38 +0000)]
[PATCH] applets/systemmonitor: skip configure button on sensorless faces
Some faces don't need sensors as they have their data included already,
namely Process Table and Application Table. The applet does not take
this into account and keeps showing the "Configure" button.
Instead, don't show that button if one of these faces is the current
face.
Co-authored-by: Christoph Wolk <cwo.kde@posteo.net>
Gbp-Pq: Name upstream_b9bc83c6_applets-systemmonitor-skip-configure-button-on-sensorless-faces.patch
The fullRepresentation has a little efficiency trick: it unloads the
model while it is not expanded, so the ListView does not need to be
updated while it is not visible. In general this is fine, but it
interacts very badly with attempts to put the fullRepresentation
directly on the desktop (or in a very large panel) and the auto-closing
functionality of the notification applet. When the notification history
ever becomes empty, it tries to close the fullRepresentation by setting
expanded to false, which by itself does not do any harm either (the
fullRepresentation stays a fullRepresentation), but it does unload the
model, so the history never updates again (unless the user manually
resizes it to become too small for the fullRepresentation then back
again, which resets it to its proper expanded state).
Instead, we modify closePlasmoid() to only set expanded to false if the
widget is below either switchWidth or switchHeight.
BUG: 503815
FIXED-IN: 6.4.0
Gbp-Pq: Name upstream_142caad0_applets-notification-fix-fullRepresentation-only-widgets.patch
[PATCH] Warn user about full storage in any device/partition
Currently, we only check for home and / partitions to be full
when warning user. With this commit we instead check for all
partitions / devices that are mounted and not read only.
Co-authored-by: David Edmundson <kde@davidedmundson.co.uk>
Gbp-Pq: Name upstream_9e0939c1_Warn-user-about-full-storage-in-any-device-partition.patch
Notification bodies have their width constrained by the notification and
the horizontal scrollbar forced off, but they can still be scrolled with
a horizontal wheel, touchpad, or similiar. This is surprising and
pointless.
Instead explicitly set the contentWidth, which is otherwise ultimately
based on the underlying TextEdit (and that's the width it would have on
a single line without wrapping).
Gbp-Pq: Name upstream_2c27c9db_applets-notifications-don-t-allow-horizontal-scrolling.patch
Han Young [Sat, 22 Feb 2025 15:13:19 +0000 (23:13 +0800)]
[PATCH] kcm_regionandlang: add locale C to mapping and always set LANG and LC_*
BUG: 500432
Add locale C to glibc mappings so that locale C is actually saved to config file
Also set LC_* whenever LANG is set, this ensure LC_* are always up to date. In previous logic, LC_* can become out of sync if user change LANG to something else than changed it back.
Gbp-Pq: Name upstream_c9ee2931_kcm-regionandlang-add-locale-C-to-mapping-and-always-set-LANG-and-LC-.patch
Right now there are two problems:
1. Deleting a logged-in user shows no warning about this.
2. Asking to delete the files of a logged-in user fails silently
(AccountsService simply won't do it).
This commit solves both problems: now the user sees a warning dialog
when they try to delete another logged-in user, and it also prevents
them from trying to delete a logged-in user's files, instead redirecting
them to just delete the account but not the files.
To achieve this, I needed to change what the `loggedIn` property does,
because previously it was inaccurate, returning whether the queried user
is the currently logged-in user. Now it returns whether the quaried user
is logged in, and I added a new `isMe` property to hold whether the
queried user is the currently logged-in user.
BUG: 495494
FIXED-IN: 6.4.0
Gbp-Pq: Name upstream_9abfdd26_kcm-users-refine-deleting-logged-in-user-UX.patch
[PATCH] applets/appmenu: Fix displaying menu of the previous active window
We need to break the DBusMenuImporter::menuUpdated() signal connection
when the active window changes. Otherwise, it's possible that the
menuUpdated signal will be emitted and the menu will be marked as
available.
BUG: 473714
Gbp-Pq: Name upstream_73875471_applets-appmenu-Fix-displaying-menu-of-the-previous-active-window.patch
Tomislav Pap [Mon, 24 Mar 2025 23:23:07 +0000 (23:23 +0000)]
[PATCH] Fix Scroll Wheel issue in AllApps submenu of Application Dashboard
Scroll with mouse wheel was problematic in AllApps subsection. It worked
partially, abruptly stopping when hovering over app icons, or just
during mouse wheel scrolling.
The problem is that QQuick WheelInterceptor::findwheelArea() never entered
into its if statement because there are 3 children elements of QML parent,
and their z axis values are 1, 0, 0 respectfully.
BUG: 486481
FIXED-IN: 6.4.0
Gbp-Pq: Name upstream_4f9b1a69_Fix-Scroll-Wheel-issue-in-AllApps-submenu-of-Application-Dashboard.patch